home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 2.3 KB | 56 lines |
- 10 PRINT," SUN TRACKING PROGRAM 9/27/83
- 12 PRINT,"k2uyh ---- modified for ibm pc ---- wa2tif":PRINT
- 15 PI=3.1416
- 20 TW=2*PI: RP=TW/360
- 30 DEF FNS(X)=ATN(X/SQR(1-X^2))
- 40 DEF FNC(X)=PI/2-ATN(X/SQR(1-X^2))
- 50 DEF FNI(X)=INT(0.5+X)
- 60 DEF FNR(X)=X-TW*INT(X/TW)
- 70 FOR J=1 TO 24: PRINT: NEXT
- 80 PRINT " *****************************"
- 90 PRINT " * *"
- 100 PRINT " * SUN TRACKING V1.1 *"
- 110 PRINT " * *"
- 120 PRINT " *****************************": PRINT: PRINT
- 125 PRINT: PRINT: PRINT: PRINT
- 130 PRINT: INPUT "CALL SIGN"; CL$: IF CL$<>"K2UYH" THEN 150
- 140 DO=74: MO=46: DA=40: MA=16: GOTO 170
- 150 INPUT "LATITUDE IN DEG, MIN"; DA, MA
- 160 INPUT "LONGITUDE IN DEG, MIN"; DO, MO
- 170 R1=RP*(DO+MO/60): R2=RP*(DA+MA/60): PRINT
- 175 INPUT "DO YOU WANT HARD COPY (Y/N)"; P$: PRINT
- 180 INPUT "BEGINNING DATE (MM,DD,YYY)"; M,D,Y
- 190 INPUT "HOUR"; H: IF H<0 OR H>24 THEN 190 ELSE YR=Y-1900
- 200 JD=365*YR+INT(YR/4)+INT(30.55*(M+2))-2*INT((M+7)/10)+D-93
- 210 H=INT(H): IF YR-4*INT(YR/4)>0.5 OR M>=3 THEN JD=JD+1
- 220 T0=(JD-29219)*1440: SN=SIN(0.409138-0*T0)
- 230 PRINT: PRINT: PRINT "SOLAR AZIMUTH AND ELEVATION DATA FOR "; CL$
- 240 PRINT: PRINT "DATE = "; M; "/"; D; "/"; Y
- 250 PRINT "TIME", "AZIMUTH", "ELEVATION", "GHA", "DEC"
- 251 IF P$<>"Y" THEN 260 ELSE LPRINT: LPRINT: LPRINT
- 252 LPRINT,: LPRINT,: LPRINT, "SOLAR AZIMUTH AND ELEVATION DATA FOR "; CL$
- 253 LPRINT,: LPRINT, "DATE = "; M; "/"; D; "/"; Y
- 254 LPRINT, "TIME", "AZIMUTH", "ELEVATION", "GHA", "DEC"
- 260 FOR I=0 TO 55 STEP 5: GT=I+60*H: T=T0+GT
- 270 IF 15*INT(I/15)=I THEN PRINT: LM=4.88367+1.1945E-05*T
- 280 G=6.23471+1.1945E-05*T: GS=GT+399.254+0.00273792*T
- 290 TI=100*H+I: C1=FNR(LM): C1=C1+(0.0334339-0*T)*SIN(G)
- 300 C1=C1+(0.000349303-0*T)*SIN(2*G)
- 310 DE=FNS(SN*SIN(C1)): RA=COS(C1)/COS(DE)
- 320 IF ABS(RA)=1 THEN RA=(1-SGN(RA))*PI/2): GOTO 350
- 330 RA=FNC(RA)
- 340 IF SIN(C1)<0 THEN RA=-RA
- 350 GH=GS*TW/1440-RA: GH=FNR(GH): LH=GH-R1
- 360 EL=FNS(COS(R2)*COS(LH)*COS(DE)+SIN(R2)*SIN(DE))
- 365 IF EL<0 THEN PRINT TI, "*", "*", FNI(GH/RP), FNI(DE/RP): IF P$<>"Y" THEN 420
- 370 IF EL<0 THEN PRINT#2, TI, "*", "*", FNI(GH/RP), FNI(DE/RP): GOTO 420
- 380 AZ=(COS(R2)*SIN(DE)-SIN(R2)*COS(LH)*COS(DE))/COS(EL)
- 390 IF ABS(AZ)>=1 THEN AZ=(1-SGN(AZ))*PI/2: GOTO 410
- 400 AZ=FNC(AZ): IF SIN(LH)>0 THEN AZ=TW-AZ
- 410 PRINT TI, FNI(AZ/RP), FNI(EL/RP), FNI(GH/RP), FNI(DE/RP)
- 415 IF P$="Y" THEN LPRINT, TI, FNI(AZ/RP), FNI(EL/RP), FNI(GH/RP), FNI(DE/RP)
- 420 NEXT: PRINT: IF P$="Y" THEN LPRINT
- 430 INPUT "WANT TO END, NEXT HOUR (NX), NEW DAY (ND), NEW HOUR (NH)"; Q$
- 440 IF Q$="END" THEN END ELSE IF Q$="ND" THEN 180 ELSE IF Q$="NH" THEN 190 ELSE IF Q$="NX" THEN 450 ELSE 430
- 450 PRINT: H=H+1: GOTO 260
-